// Original file: demo/proto/sample.proto

import type * as grpc from '@grpc/grpc-js'
import type { MethodDefinition } from '@grpc/proto-loader'
import type { HelloReply as _helloworld_HelloReply, HelloReply__Output as _helloworld_HelloReply__Output } from '../helloworld/HelloReply';
import type { HelloRequest as _helloworld_HelloRequest, HelloRequest__Output as _helloworld_HelloRequest__Output } from '../helloworld/HelloRequest';

export interface GreeterClient extends grpc.Client {
  SayHello(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  SayHello(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  SayHello(argument: _helloworld_HelloRequest, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  SayHello(argument: _helloworld_HelloRequest, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  sayHello(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  sayHello(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  sayHello(argument: _helloworld_HelloRequest, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  sayHello(argument: _helloworld_HelloRequest, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientUnaryCall;
  
  SayHelloB(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_helloworld_HelloRequest, _helloworld_HelloReply__Output>;
  SayHelloB(options?: grpc.CallOptions): grpc.ClientDuplexStream<_helloworld_HelloRequest, _helloworld_HelloReply__Output>;
  sayHelloB(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_helloworld_HelloRequest, _helloworld_HelloReply__Output>;
  sayHelloB(options?: grpc.CallOptions): grpc.ClientDuplexStream<_helloworld_HelloRequest, _helloworld_HelloReply__Output>;
  
  SayHelloC(metadata: grpc.Metadata, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  SayHelloC(metadata: grpc.Metadata, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  SayHelloC(options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  SayHelloC(callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  sayHelloC(metadata: grpc.Metadata, options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  sayHelloC(metadata: grpc.Metadata, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  sayHelloC(options: grpc.CallOptions, callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  sayHelloC(callback: (error?: grpc.ServiceError, result?: _helloworld_HelloReply__Output) => void): grpc.ClientWritableStream<_helloworld_HelloRequest>;
  
  SayHelloS(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_helloworld_HelloReply__Output>;
  SayHelloS(argument: _helloworld_HelloRequest, options?: grpc.CallOptions): grpc.ClientReadableStream<_helloworld_HelloReply__Output>;
  sayHelloS(argument: _helloworld_HelloRequest, metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientReadableStream<_helloworld_HelloReply__Output>;
  sayHelloS(argument: _helloworld_HelloRequest, options?: grpc.CallOptions): grpc.ClientReadableStream<_helloworld_HelloReply__Output>;
  
}

export interface GreeterHandlers extends grpc.UntypedServiceImplementation {
  SayHello: grpc.handleUnaryCall<_helloworld_HelloRequest__Output, _helloworld_HelloReply>;
  
  SayHelloB: grpc.handleBidiStreamingCall<_helloworld_HelloRequest__Output, _helloworld_HelloReply>;
  
  SayHelloC: grpc.handleClientStreamingCall<_helloworld_HelloRequest__Output, _helloworld_HelloReply>;
  
  SayHelloS: grpc.handleServerStreamingCall<_helloworld_HelloRequest__Output, _helloworld_HelloReply>;
  
}

export interface GreeterDefinition extends grpc.ServiceDefinition {
  SayHello: MethodDefinition<_helloworld_HelloRequest, _helloworld_HelloReply, _helloworld_HelloRequest__Output, _helloworld_HelloReply__Output>
  SayHelloB: MethodDefinition<_helloworld_HelloRequest, _helloworld_HelloReply, _helloworld_HelloRequest__Output, _helloworld_HelloReply__Output>
  SayHelloC: MethodDefinition<_helloworld_HelloRequest, _helloworld_HelloReply, _helloworld_HelloRequest__Output, _helloworld_HelloReply__Output>
  SayHelloS: MethodDefinition<_helloworld_HelloRequest, _helloworld_HelloReply, _helloworld_HelloRequest__Output, _helloworld_HelloReply__Output>
}
